import 'package:shared_preferences/shared_preferences.dart';
class TokenManager{
  String ?_token;
  final _key = 'enjoy-plus-key';
  
  //私有的实例对象
  static TokenManager? _instance;

  //命名构造函数 返回一个TokenManager实例对象
  TokenManager._internal();

  //工厂模式
  //默认的构造函数 - 可以省略不写 factory
  //执行时机是 外部创建实例自动执行
  factory TokenManager(){
    _instance ??= TokenManager._internal();
    return _instance!;
  }
  
  //场景：最开始启动进入页面 获取token
  Future init() async{
    //获取数据仓库实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    //读取token
    _token = prefs.getString(_key);
  }

  //场景：登录成功后 存储token
  Future setToken(String token) async{
    _token = token;
    //获取数据仓库实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString(_key, token);
  }

  //场景：在开发时需要确认是否有token时 同步获取token
  String ?getToken(){
    return _token;
  }

  //场景：退出登录的时候 清除token
  Future removeToken() async{
    _token = null;
    //获取数据仓库实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.remove(_key);
  }
}